Detecting Data Races in Parallel Program Executions
نویسندگان
چکیده
Several methods currently exist for detecting data races in an execution of a shared-memory parallel program. Although these methods address an important aspect of parallel program debugging, they do not precisely define the notion of a data race. As a result, is it not possible to precisely state which data races are detected, nor is the meaning of the reported data races always clear. Furthermore, these methods can sometimes generate false data race reports. They can determine whether a data race was exhibited during an execution, but when more than one data race is reported, only limited indication is given as to which ones are real. This paper addresses these two issues. We first present a model for reasoning about data races, and then present a two-phase approach to data race detection that attempts to validate the accuracy of each detected data race. Our model of data races distinguishes among those data races that actually occurred during an execution (actual data races), those that could have occurred because of timing variations (feasible data races), and those that appeared to have occurred (apparent data races). The first phase of our two-phase approach to data race detection is similar to previous methods and detects a set of data race candidates (the apparent data races). We prove that this set always contains all actual data races, although it may contain other data races, both feasible and infeasible. Unlike previous methods, we then employ a second phase which validates the apparent data races by attempting to determine which ones are feasible. This second phase requires no more information than previous methods collect, and involves making a conservative estimate of the data dependences among the shared data to determine how these dependences may have constrained alternate orderings potentially exhibited by the execution. Each apparent data race can then be characterized as either being feasible, or as belonging to a set of apparent data races where at least one is feasible.
منابع مشابه
Visualization Tool for Debugging Data Races in Structured Fork-join Parallel Programs
Ensuring the reliability of structured fork-join parallel programs is difficult because the potential for subtle interactions between concurrent threads can cause concurrency bugs, such as data races, which are hard to detect, reproduce, and eliminate. The visualization for the executions of the programs may offer effective debugging environments with intuitively understanding. Unfortunately, v...
متن کاملFirst Race Detection in Parallel Program with Random Synchronization using Trace Information
Detecting data races in multi-threaded programs is a challenging problem in debugging, because the races could reveal nondeterministic program behavior in execution of such programs. Nondeterministic runtime effects of a race are hard to identify and it is difficult to decide whether the reported data races can appear or not in the actual program executions. Previous techniques for detecting ra...
متن کاملRace Condition Detection for Debugging Shared-memory Parallel Programs
This thesis addresses theoretical and practical aspects of the dynamic detecting and debugging of race conditions in shared-memory parallel programs. To reason about race conditions, we present a formal model that characterizes actual, observed, and potential behaviors of the program. The actual behavior precisely represents the program execution, the observed behavior represents partial inform...
متن کاملDetecting Data Races by Analyzing Sequential Traces
One of the fundamental problems encountered when debugging a parallel pro gram is determining the potential race conditions in the program A race condition exists when multiple tasks access shared data in an unconstrained order and at least one of the accesses is a write operation The program s behavior can be unpre dictable when race conditions are present This paper describes techniques which...
متن کاملRestructuring Parallel Programs for On-the-Fly Race Detection
Detecting races is important for debugging explicit shared-memory parallel programs, because the races result in unintended non-deterministic executions of the programs. Previous on-they techniques to detect races in parallel programs with inter-thread coordination show serious space overhead in two components of complexity, and can not guarantee that, in an execution instance, the race detecte...
متن کاملScalable Monitoring Technique for Detecting Races in Parallel Programs
Detecting races is important for debugging shared-memory parallel programs, because the races result in unintended nondeterministic executions of the programs. Previous on-they techniques to detect races have a bottleneck caused by the need to check or serialize all accesses to each shared variable in a program that may have nested parallelism with barrier synchronization. The new scalable moni...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1989